<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Gastos extends CI_Controller {

	function __construct()
	{
		parent::__construct();
		$this->load->model('gastos_model');
		$this->load->model('ganhos_model');
		$this->load->model('categoria_model');
	}
	
	private function getArrayCategorias($padrao = "-- Selecione --"){
		$user = $this->session->userdata(USUARIO);
		$dbres = $this->categoria_model->buscarTodos(array("id_usuario"=>$user->id));
		
		//gera o array no formato para a combo
		$ddmenu = array();
		$ddmenu[''] = $padrao;
		if($dbres){
			foreach ($dbres as $tablerow) {
				$ddmenu[$tablerow->id] = $tablerow->nome;
			}
		}
		return $ddmenu;
		
	}
	public function index()
	{
		$this->load->view('app/gastos/gasto');
	}
	
	public function novo()
	{
		$data["categorias"] = $this->getArrayCategorias();
		$this->load->view('app/gastos/novo_gasto',$data);
	}
	
	public function editar($id)
	{
		$user = $this->session->userdata(USUARIO);
		$gasto = $this->gastos_model->buscar(array("id"=>$id,"id_usuario"=>$user->id));
		$data['gasto'] = $gasto;
		$data["categorias"] = $this->getArrayCategorias();
		$this->load->view('app/gastos/editar_gasto',$data);
	}
	
	public function excluir($id)
	{
		$user = $this->session->userdata(USUARIO); 
		$this->gastos_model->excluir(array("id"=>$id,"id_usuario"=>$user->id));
		echo 'excluido';
	}
	
	function ultimoDiaMes($newData){
      /*Desmembrando a Data*/
      list($newDia, $newMes, $newAno) = explode("/", $newData);
      return date("d/m/Y", mktime(0, 0, 0, $newMes+1, 0, $newAno));
   }
	
	public function tabela()
	{
		$user = $this->session->userdata(USUARIO); 
		if($user){
			$data["categorias"] = $this->getArrayCategorias("-- Todas --");
			
			$data['filtro_categoria'] = $this->input->post('filtro_categoria');
			$data['data_de'] = $this->input->post('data_de');
			if($data['data_de']==''){
				$data['data_de'] = date("01/m/Y");
			}
			$data['data_ate'] = $this->input->post('data_ate');
			if($data['data_ate']==''){
				$data['data_ate'] = date($this->ultimoDiaMes($data['data_de']));
			}
			
			
			$data_de = explode("/", $data['data_de']);
			$data_de = $data_de[2].'-'.$data_de[1].'-'.$data_de[0];
			$data_ate = explode("/", $data['data_ate']);
			$data_ate = $data_ate[2].'-'.$data_ate[1].'-'.$data_ate[0];
			
			if($data['filtro_categoria']!='')
			$where["gasto.id_categoria"] = $data['filtro_categoria'];
			$where['gasto.data_cadastro >='] =  $data_de;
			$where['gasto.data_cadastro <='] =  $data_ate;
			$where['gasto.id_usuario'] = $user->id;
			$gastos = $this->gastos_model->buscarTodos($where);
			$data['gastos'] = $gastos;
					
			$this->load->view('app/gastos/tabela_gasto',$data);
		}	
	}
	
	public function resumo()
	{
		$this->load->view('app/resumo/resumo');
	}
	
	public function tabelaresumo()
	{
		$user = $this->session->userdata(USUARIO); 
		if($user){
			
			$data['data_de'] = $this->input->post('data_de');
			if($data['data_de']==''){
				$data['data_de'] = date("01/m/Y");
			}
			$data['data_ate'] = $this->input->post('data_ate');
			if($data['data_ate']==''){
				$data['data_ate'] = date($this->ultimoDiaMes($data['data_de']));
			}
			
			
			$data_de = explode("/", $data['data_de']);
			$data_de = $data_de[2].'-'.$data_de[1].'-'.$data_de[0];
			$data_ate = explode("/", $data['data_ate']);
			$data_ate = $data_ate[2].'-'.$data_ate[1].'-'.$data_ate[0];
			$where['gasto.data_cadastro >='] =  $data_de;
			$where['gasto.data_cadastro <='] =  $data_ate;
			$where['gasto.id_usuario'] = $user->id;

			$gastos = $this->gastos_model->buscarTodos($where,'asc');
			$data['gastos'] = $gastos;
			
			$dbres = $this->categoria_model->buscarTodos(array("id_usuario"=>$user->id));
			//gera o array
			$totais = array();
			foreach ($dbres as $tablerow) {
				$where["gasto.id_categoria"] = $tablerow->id;
				$totais[$tablerow->id] = $this->gastos_model->buscarTotais($where);
			}
			$data['totais_chart'] = $totais;
			
			$where = array();
			$where['data_cadastro >='] =  $data_de;
			$where['data_cadastro <='] =  $data_ate;
			$data['totais_ganho'] = $this->ganhos_model->buscarTotais($where)->valor;
					
			$this->load->view('app/resumo/tabela_resumo',$data);
		}	
	}
	
	public function gastos()
	{
		$this->index();
	}
	
	public function gravar(){
		//definicao da lista de regras a aplicar
		$config=array(array(
	              'field'   => 'nome',
	              'label'   => 'Nome',
	              'rules'   => 'trim|required|min_length[4]|max_length[40]'
	              ),array(
	              'field'   => 'valor',
	              'label'   => 'Valor',
	              'rules'   => 'trim|required'
	              ),array(
	              'field'   => 'categoria',
	              'label'   => 'Categoria',
	              'rules'   => 'trim|required'
	              ),array(
	              'field'   => 'data',
	              'label'   => 'Data',
	              'rules'   => 'trim|required'
	              ),array(
	              'field'   => 'id',
	              'label'   => 'Id',
	              'rules'   => 'trim'
	              ));

	          $id = $this->input->post('id');
              //atribui a lista de regras a proxima execucao da validacao
              $this->form_validation->set_rules($config);
              //Teste de validacao de dados
              if(($this->form_validation->run())==FALSE)
              {
              	if($id){
              		$this->load->view('app/gastos/editar_gasto');
              	}else{
              		$this->novo();
              	}
              }
              else
              {
              	$dias = explode("/", $this->input->post('data'));
              	$data['data_cadastro'] = $dias[2].'-'.$dias[1].'-'.$dias[0];
              	$data['nome'] = $this->input->post('nome');
	            $data['valor'] = $this->input->post('valor');
	            $data['id_categoria'] = $this->input->post('categoria');
              	if($id){
	              	$this->gastos_model->atualizar($data,$id);
	              	$this->editar($id);
              	}else{
	              	$user = $this->session->userdata(USUARIO); 
	              	$data['id_usuario'] = $user->id;              	
	              	$this->gastos_model->gravar($data);
	              	$this->novo();
              	}
              }
	}

}
